package reflect;

import java.lang.reflect.Constructor;

/**
 * 使用指定构造器实例化对象
 */
public class ReflectDemo3 {
    public static void main(String[] args) throws Exception {
        //Person(String,int)
        Person p = new Person("克晶",18);
        System.out.println(p);

        //1获取类对象
        Class cls = Class.forName("reflect.Person");
        /*
            Class提供的方法:
            Constructor getConstructor(...)
            获取当前类对象表示的类中指定的构造器.
            Constructor类的每一个实例用于表示一个特定的构造器,它也是反射对象之一.

            该方法需要传递参数,参数是若干的class对象,用于表示参数列表的类型
         */
//        Constructor c = cls.getConstructor();//获取的就是无参构造器:Person()
        //获取的构造器:Person(String,int)
        Constructor c = cls.getConstructor(String.class,int.class);
        //Object o = new Person("传奇",22);
        Object obj = c.newInstance("传奇",22);
        System.out.println(obj);

        //Object obj = new Person("王伟超);
        Constructor c2 = cls.getConstructor(String.class);
        Object obj2 = c2.newInstance("王伟超");
        System.out.println(obj2);

    }
}








